package com.线程Thread.线程状态;
@SuppressWarnings({"all"})
public class 线程状态 {
    /**线程的六（7）种状态  状态是枚举类型ENUM
     * 1.NEW  ： 创建后尚未启动
     * 2.RUNNABLE  在Java虚拟机中处于执行的线程 (有些书细分为RUNNING和Ready）
     * 3.BLOCKED  被阻塞等待监视器锁定的线程 处于此状态
     * 4.WAITING ：正在等待另一个线程执行特定动作的线程状态
     * 5.TIMED_WAITING ：正在等待另一个线程执行动作达到指定等待时间的线程状态；
     * 6.TERMINATED ：已退出的线程状态；
     */
    public static void main(String[] args) throws InterruptedException {
     /**简单演示线程状态
      * t线程的状态为  NEW           创建后尚未启动
      * t线程的状态为  RUNNABLE     处于执行的线程
      * t线程的状态为  RUNNABLE     处于执行的线程
      * t线程的状态为  RUNNABLE
      * t线程的状态为  RUNNABLE
      * t线程的状态为  RUNNABLE
      * t线程的状态为  RUNNABLE
      * t线程的状态为  RUNNABLE
      * t线程的状态为  RUNNABLE
      * t线程的状态为  TIMED_WAITING  刚好获取到 等待时间的线程状态（当前是休眠 ）
      * t线程的状态为  RUNNABLE
      *
      * t线程的状态为  RUNNABLE
      * t线程的状态为  RUNNABLE
      * t线程的状态为  TERMINATED    推出线程后的状态
      *
      * 进程已结束，退出代码为 0*/
     T t = new T();
     System.out.println("t线程的状态为  "+t.getState());  ///获取还未开始的状态
     t.start();   ///启动
     System.out.println("t线程的状态为  "+t.getState());  ///启动后的执行状态
     while(t.getState() != Thread.State.TERMINATED) {  ///如果t的线程状态为已退出状态就退出循环
      System.out.println("t线程的状态为  "+t.getState());  ///获取启动过程中的可能状态
      Thread.sleep(500);
     }
     System.out.println("t线程的状态为  "+t.getState());  ///线程结束后的状态

    }
 }

 class T extends Thread {
  @Override
  public void run() {
   for (int i = 0; i < 10; i++) {
    System.out.println(" ");

       try {
           sleep(500);
       } catch (InterruptedException e) {
       }
   }
  }
 }